package com.xuecheng.service;

import com.xuecheng.model.dto.CheckCodeParamsDTO;
import com.xuecheng.model.vo.CheckCodeResultVO;

/**
 * 验证码接口
 */
public interface CheckCodeService {
	
	
	/**
	 * 生成验证码
	 */
	CheckCodeResultVO generate(CheckCodeParamsDTO checkCodeParamsDTO);
	
	/**
	 * 校验验证码
	 */
	boolean verify(String key, String code);
	
	
	/**
	 * 验证码生成器
	 */
	interface CheckCodeGenerator {
		/**
		 * 验证码生成
		 */
		String generate(int length);
	}
	
	/**
	 * key生成器
	 */
	interface KeyGenerator {
		
		/**
		 * key生成
		 */
		String generate(String prefix);
	}
	
	
	/**
	 * 验证码存储
	 */
	interface CheckCodeStore {
		
		/**
		 * 向缓存设置key
		 */
		void set(String key, String value, Integer expire);
		
		String get(String key);
		
		void remove(String key);
	}
}
